#include "threadPool.h"

// 线程池初始化
int threadPoolInit(threadPool_t * pthreadPool,int workerNum)
{
    // 对所有子线程的信息进行初始化 
    tidArrInit(&pthreadPool->tidArr,workerNum);
    // 队列进行初始化
    taskQueueInit(&pthreadPool->taskQueue);
    // 初始化互斥锁
    pthread_mutex_init(&pthreadPool->mutex,NULL);
    // 初始化条件变量
    pthread_cond_init(&pthreadPool->cond,NULL);
    return 0;
}

// 创建子线程
int makeWorker(threadPool_t * pthreadPool,int workerNum)
{
    for(int i = 0;i<workerNum;i++)
    {
        pthread_create(&pthreadPool->tidArr.arr[i],NULL,threadFunc,pthreadPool);// 主线程直接将线程池（包括条件变量，锁，共享队列，以及其它子线程的pid）这个数据结构传递给了子线程
    }

    return 0;
}
